package com.server.common.code.utils;

import com.server.model.all.constant.PatternConstant;

import java.util.regex.Pattern;

public class PatternUtils {

    /**
     * 判断手机号
     * @author LXC
     * @date 2022/6/15 21:46
     */
    public static boolean hasMobile(String mobile){
        Pattern pattern = Pattern.compile(PatternConstant.REGEX_MOBILE_EXACT);
        return pattern.matcher(mobile).matches();
    }

    /**
     * 判断邮箱
     * @author LXC
     * @date 2022/6/23 21:17
     */
    public static boolean hasEmail(String email){
        /**
         *   正则表达式实用规则
         *   ^匹配输入字符串的开始位置
         *   $结束的位置
         *   \转义字符 eg:\. 匹配一个. 字符  不是任意字符 ，转义之后让他失去原有的功能
         *   \t制表符
         *   \n换行符
         *   \\w匹配字符串  eg:\w不能匹配 因为转义了
         *   \w匹配包括字母数字下划线的任何单词字符
         *   \s包括空格制表符换行符
         *   *匹配前面的子表达式任意次
         *   .小数点可以匹配任意字符
         *   +表达式至少出现一次
         *   ?表达式0次或者1次
         *   {10}重复10次
         *   {1,3}至少1-3次
         *   {0,5}最多5次
         *   {0,}至少0次 不出现或者出现任意次都可以 可以用*号代替
         *   {1,}至少1次  一般用+来代替
         *   []自定义集合     eg:[abcd]  abcd集合里任意字符
         *   [^abc]取非 除abc以外的任意字符
         *   |  将两个匹配条件进行逻辑“或”（Or）运算
         *   [1-9] 1到9 省略123456789
         *    邮箱匹配 eg: ^[a-zA-Z_]{1,}[0-9]{0,}@(([a-zA-z0-9]-*){1,}\.){1,3}[a-zA-z\-]{1,}$
         *
         */
        Pattern pattern = Pattern.compile(PatternConstant.REGEX_EMAIL_EXACT);
        return pattern.matcher(email).matches();
    }

    /**
     * 包含数字
     * @author LXC
     * @date 2022/6/23 21:25
     */
    public static boolean containNumber(String str){
        Pattern pattern = Pattern.compile(PatternConstant.CONTAIN_NUMBER);
        return pattern.matcher(str).matches();
    }

    /**
     * 包含小写字母
     * @author LXC
     * @date 2022/6/23 21:25
     */
    public static boolean containLowLetter(String str){
        Pattern pattern = Pattern.compile(PatternConstant.CONTAIN_LOW_LETTER);
        return pattern.matcher(str).matches();
    }

    /**
     * 包含大写字母
     * @author LXC
     * @date 2022/6/23 21:25
     */
    public static boolean containCapitalizeLetter(String str){
        Pattern pattern = Pattern.compile(PatternConstant.CONTAIN_CAPITALIZE_LETTER);
        return pattern.matcher(str).matches();
    }

}
